/**
 * 最基础的元字符的使用
 *
 * /d 数字  /D 除数字以外的
 * /s 任意一个空白符号 /S除任意的空白符
 * /w 英文数字下划线  /W除了英文数字下划线
 * . 代表换行符之外的所有字符.
 */



 let hd = "houdunren 2010";
 console.log(hd.match(/\d/g)); //["2", "0", "1", "0"]
 console.log(hd.match(/\d/g).join(''));  // 2010  字符数组连接

 let phone = '010-19808989'// 注意, 这里的`-`是有特殊意义的, 所有, 需要进行转义
 console.log((/\d{3}\-\d{7,8}$/g).test(phone));


 let email = '1766278245@qq.com'
 let email1 = 'bowang@taeltech.com'
//  console.log(/^\d+@\w+.(com|cn)/.test(email))
console.log(/\w+@\w+.(com|cn)/.test(email));
 console.log(/\w+@\w+.(com|cn)/.test(email1));


 let qq = '1476278245'
 console.log(/[1-9][0-9]{4,}/.test(qq))


//  match前面是字符串, 后面的是正则.
 let obj = '张三:010-99999999,李四:020-88888888';
let res = obj.match(/[^:\d-,]+/g); // 这里用的是类似于split的方式, 就是去除掉 `:010-`之后的内容. 类似于obj.split(‘:’)
// console.log(res);

// 这里如果不加 ‘+’, 那么输出的就是一个个的字符.
// 如果加上了‘+’, 那么如果是多个字符连在一起的, 那么, 就会输出字符串.
console.log(obj.match(/\W+/g));

// 任意的空格
console.log(/\s/.test('\n'));
console.log(/\s/.test('\t'));
console.log(/\s/.test(' '))

// 任意的非空格
console.log(/\S/g.test('obobo---   hah 292929   '))
console.log('obobo---   hah 292929   '.match(/\S+/g).join(''))

let a = 'obobo---   hah 292929   '
console.log(a.replace(/\s+/g, ''));
console.log(a);

let b = `obobo--- \n
         hah 292929
          `
console.log(/.+/s.test(b));


let ck4  = 'thi is th e s S useage'
console.log(ck4.match(/[/s/S]+/).input)

// i 不区分大小写的匹配 ignore
let ck3 = 'houdunren.comHOuDUNren.com'
ck3 = ck3.replace(/houdunren.com/gi, 'houdunren.com')
console.log(ck3);

// g 全局匹配, 防止有的字符串中有多个待查找的字符.
let ck5 = 'houdunren.comhoudunRen.COM'
ck5 = ck5.replace(/houdunren.com/ig, 'HOUDUNEN.COM')
console.log(ck5);

let ck6 = 'ckckckckckckckckckCKCKCKCKCCKCkCkcKKKKKCKKCC'
ck6 = ck6.replace(/ck/gi,'KB')
console.log(ck6);

// m 多行匹配
let classes = `
  #1 js,200元 #
  #2 php,300元 #
  #9 houdunren.com # 后盾人
  #3 node.js,180元 #
`;
// [{name:'js',price:'200元'}]
// map会自动返回一个array数组类型.
let lessons = classes.match(/^\s*#\d+\s+.+\s+#$/gm).map(v => {
  v = v.replace(/\s*#\d+\s*/, "").replace(/\s+#/, "");
  console.log(v);
  const [name, price] = v.split(",");
  return { name, price };
});
console.log(JSON.stringify(lessons, null, 2));